//var xhr = new XMLHttpRequest(); //xhr.open('GET', 'http://ip-api.com/json'); //xhr.onload = function() { // if (xhr.status === 200) { // var geoData = JSON.parse(xhr.responseText); // document.body.classList.add("country--" + geoData.countryCode.toLowerCase()); // } // // else { // document.body.classList.add('country---und'); // } //}; //xhr.send(); jQuery(document).ready(function($) { if ($('body').hasClass('scrollmagic')) { var controller = new ScrollMagic.Controller(); if ($('.hr__quadrant.hr__quadrant--animate').length) { var quadrantHeight = $('.hr__quadrant--animate').outerHeight(true); var annimationDuration = $('#hr__scroll-content').height(); var leadersHeight = $('#leaders-scroll-content').height(); var attractorsHeight = $('#attractors-scroll-content').height(); var achieversHeight = $('#achievers-scroll-content').height(); var learnersHeight = $('#learners-scroll-content').height(); var scene = new ScrollMagic.Scene({triggerElement: ".hr__quadrant", triggerHook: 'onLeave', duration: annimationDuration - quadrantHeight, offset: - 200 }) .setPin(".hr__quadrant--animate") //.addIndicators({name: "1 " + annimationDuration}) // add indicators (requires plugin) .addTo(controller); var scene1 = new ScrollMagic.Scene({triggerElement: "#leaders-scroll-content", duration: leadersHeight }) .setClassToggle('[data-title="leaders"]', 'active') //.addIndicators({name: "leaders toggle class" }) // add indicators (requires plugin) .addTo(controller); var scene2 = new ScrollMagic.Scene({triggerElement: "#attractors-scroll-content", duration: attractorsHeight }) .setClassToggle('[data-title="attractors"]', 'active') //.addIndicators({name: "learners toggle class" }) // add indicators (requires plugin) .addTo(controller); var scene3 = new ScrollMagic.Scene({triggerElement: "#achievers-scroll-content", duration: achieversHeight }) .setClassToggle('[data-title="achievers"]', 'active') //.addIndicators({name: "achievers toggle class" }) // add indicators (requires plugin) .addTo(controller); var scene4 = new ScrollMagic.Scene({triggerElement: "#learners-scroll-content" }) .setClassToggle('[data-title="learners"]', 'active') //.addIndicators({name: "learners toggle class" }) // add indicators (requires plugin) .addTo(controller); } /*if($('.hr__mwc-page__story-row').length){ $('.hr__mwc-page__story-row').each(function(index, el){ var height = $(this).find('.fl-row-content-wrap').height(); var nodeNmber = $(this).data('node'); var fixed_element = $(this).find('.fl-col-group-align-top'); var node = '.fl-node-' + fixed_element.data('node'); var fixed_element_height = fixed_element.find('.fl-col:not(.hr__mwc-page__story-row__text-section) .fl-col-content').outerHeight(true) / window.innerHeight; console.log(fixed_element.find('.fl-col:not(.hr__mwc-page__story-row__text-section) .fl-col-content').outerHeight(true)); // window.innerHeight; var scene = new ScrollMagic.Scene({triggerElement: this, triggerHook: "onLeave", offset: -260 }) .setClassToggle(this, 'hr__mwc-page__story-row--fixed-image') .addIndicators({name: "st" }) // add indicators (requires plugin) //.addTo(controller); var scene = new ScrollMagic.Scene({triggerElement: this, triggerHook: fixed_element_height, offset: height + 15}) .setClassToggle(node, 'fl-col-group-align-bottom') //.setClassToggle('#fixed-bottom-0', 'fl-col-group-align-top') .addIndicators({name: "Fixed bottom" }) // add indicators (requires plugin) //.addTo(controller); }); }*/ if($('.side-pagination').length) { $('.hr__pagination-section').each(function (i, elem) { var elemId = $(this).attr('id'); var index = i + 1; //console.log(elemId); var scene = new ScrollMagic.Scene({triggerElement: "#" + elemId + "", triggerHook: 'onLeave', offset: -200}) .setClassToggle('.side-pagination > div[class^="menu"]', 'reached-' + index + '-item') //.addIndicators({name: 'section '+elemId+' trigger'}) // add indicators (requires plugin) .addTo(controller); //console.log(scene); }); } } if ($( '.fl-number-text .fl-number-int' ).length) { $('.fl-number-text .fl-number-int').html("
"); } $('#primary-menu .menu-item-has-children').on('click', function() { $(this).find('a').toggleClass('toggled'); $(this).find('.sub-menu').slideToggle(230); }); if ($('.hr__partners-section:not(.hr__partners-section--full-width-row) .fl-col-group').length) { var swiper = new Swiper('.hr__partners-section:not(.hr__partners-section--full-width-row) > .fl-row-content-wrap > .fl-node-content', { wrapperClass: 'fl-col-group', slideClass: 'fl-col', slidesPerView: 'auto', freeMode: true, resistanceRatio: false, breakpoints: { 1170: { autoplay: true, delay: 3000, loop: true, speed: 230 }, 992: { autoplay: true, delay: 3000, loop: true, speed: 230 }, 768: { autoplay: true, delay: 3000, loop: true, speed: 230 } } }); } if ($('.hr__partners-section--full-width-row .fl-col-group').length) { var swiper = new Swiper('.hr__partners-section--full-width-row > .fl-row-content-wrap > .fl-node-content', { wrapperClass: 'fl-col-group', slideClass: 'fl-col', slidesPerView: 'auto', resistanceRatio: false, loop: true, spaceBetween: 100, speed: 5000, autoplay: { delay: 0, disableOnInteraction: false }, breakpoints: { 1600: { spaceBetween: 0 }, 1920: { spaceBetween: 40 } } }); } if ($('.hr__projects__technologies .fl-col-group').length) { var swiper = new Swiper('.hr__projects__technologies > .fl-row-content-wrap > .fl-node-content', { wrapperClass: 'fl-col-group', slideClass: 'fl-col', slidesPerView: 'auto', delay: 3000, speed: 230, freeMode: true, resistanceRatio: false, allowTouchMove: false, breakpoints: { 768: { allowTouchMove: true } } }); } if ($('.hr__gallery-slider .fl-col-group').length) { var swiper = new Swiper('.hr__gallery-slider > .fl-row-content-wrap > .fl-node-content', { wrapperClass: 'fl-col-group', slideClass: 'fl-col', slidesPerView: 'auto', freeMode: true, resistanceRatio: false, loop: true, breakpoints: { 1170: { autoplay: true, delay: 3000, loop: true, speed: 230 }, 992: { autoplay: true, delay: 3000, loop: true, speed: 230 }, 768: { autoplay: true, delay: 3000, loop: true, speed: 230 } } }); } if ($('.hr__about-us__media-slider .fl-col-group').length) { var swiper = new Swiper('.hr__about-us__media-slider > .fl-row-content-wrap > .fl-node-content', { wrapperClass: 'fl-col-group', slideClass: 'fl-col', slidesPerView: 'auto', freeMode: true, resistanceRatio: false, breakpoints: { 768: { autoplay: true, delay: 3000, loop: true, speed: 230 } } }); } if ($('select').length) { // The following JavaScript is only needed if you // need the placeholder functionality for select // elements which are not required fields. // Add class with JavaScript so everything still // looks decent without JavaScript available. document.querySelector('select').classList.add('has-placeholder'); // Remove the fake placeholder class when the value of select changes, because // the placeholder option is disabled, it can't be selected anymore and there is // no need for the `has-placeholder` class to be applied again. document.querySelector('select').addEventListener('change', function(e) { e.currentTarget.classList.remove('has-placeholder'); }); } function we_are_hiring() { lines = [ "===============================================================================", ",--. ,--. ,--. ,------. ,--. ", "| '--' | ,--,--. ,---.| |,-. ,---. ,--.--.| .--. ' ,--,--.,--,--, | |,-. ", "| .--. |' ,-. || .--'| /| .-. :| .--'| '--'.'' ,-. || \\| / ", "| | | |\\ '-' |\\ `--.| \\ \\\\ --.| | | |\\ \\ \\ '-' || || || \\ \\ ", "`--' `--' `--`--' `---'`--'`--'`----'`--' `--' '--' `--`--'`--''--'`--'`--' ", "===============================================================================", " You opened the console! Know some code, do you? Want to work for one of the ", " best startups around? https://www.hackerrank.com/careers ", "===============================================================================" ] for (i = 0; i < lines.length; i ++) { console.log(lines[i]); } } if ($('body').hasClass('home')) { setTimeout(we_are_hiring, 5000); } if(window.trackJs) { trackJs.track("Page Loaded"); } $('.fl-post-toggle-content').on('click', function () { $(this).parent().toggleClass('toggled'); }); var obj = { afterRequest: function (data) { data.forEach(function(item, i, arr){ if (typeof item.value === 'string') { item.value = item.value.replace(/^.*\/\/[^\/]+/, ''); } }); return data; } }; if ($('body').hasClass('fl-builder-edit')) { $('.fl-link-field-search-input').autoSuggest('defaults', obj); } if($('.hr__hover-tab').length) { $.each($('.hr__hover-tab'),function(index, el){ var nav = $(this).find('.hr__hover-tab__nav__item.active'); if(nav.length) { var id = nav.attr('id'); $(this).find('.'+id).addClass('active'); } }); $('.hr__hover-tab__nav__item').hover(function(){ var id = $(this).attr('id'); $(this).parents('.hr__hover-tab').find('.hr__hover-tab__pane').removeClass('active'); $(this).siblings().removeClass('active'); $(this).addClass('active'); $(this).parents('.hr__hover-tab').find('.'+id).addClass('active'); },function(){ //$(this).parents('.hr__hover-tab').find('.hr__hover-tab__pane').removeClass('active'); }); } if ($('.hr__codescreen__tests-slider').length) { //Touch events var element = document.querySelector('.fl-content-slider-wrapper'); // the element touched var currentSlide = element.querySelector('.fl-slide[aria-hidden="false"]'); var startTime; // the time the first time the element is touched var startX; // In which zone of the screen where you clicked or started the touch on the X Axis (considering left top of the screen) var startY; // In which zone of the screen where you clicked or started the touch on the Y Axis (considering left top of the screen) var translateX; // Distance that the finger has dragged an element on X Axis var translateY; // Distance that the finger has dragged an element on Y Axis var currentX; // Starting point of the movement on X Axis var currentY; // Starting point of the movement on Y Axis var touchingElement = false; // checks whether the element is being touched or not var timeTaken; // Time from point A to point B var rotate = true; //Activate the elements' rotation for each move on stacked cards. var stackedOptions = 'None'; //Change stacked cards view from 'Bottom', 'Top' or 'None'. function gestureStart(evt) { startTime = new Date().getTime(); startX = evt.changedTouches[0].clientX; startY = evt.changedTouches[0].clientY; currentX = startX; currentY = startY; touchingElement = true; console.log(currentSlide); } function gestureMove(evt) { currentX = evt.changedTouches[0].clientX; currentY = evt.changedTouches[0].clientY; translateX = currentX - startX; translateY = currentY - startY; console.log(translateX, translateY); transformUi(translateX, translateY, 1, currentSlide); } function gestureEnd(evt) { if(!touchingElement){ return; } translateX = currentX - startX; translateY = currentY - startY; timeTaken = new Date().getTime() - startTime; touchingElement = false; } element.addEventListener('touchstart', gestureStart, false); element.addEventListener('touchmove', gestureMove, false); element.addEventListener('touchend', gestureEnd, false); function transformUi(moveX,moveY,opacity,elementObj) { requestAnimationFrame(function(){ var element = elementObj; // Function to generate rotate value function RotateRegulator(value) { if(value/10 > 15) { return 15; } else if(value/10 < -15) { return -15; } return value/10; } if(rotate){ rotateElement = RotateRegulator(moveX); } else { rotateElement = 0; } if(stackedOptions === "Top"){ elTrans = elementsMargin * (items - 1); if(element){ element.style.webkitTransform = "translateX(" + moveX + "px) translateY(" + (moveY + elTrans) + "px) translateZ(0) rotate(" + rotateElement + "deg)"; element.style.transform = "translateX(" + moveX + "px) translateY(" + (moveY + elTrans) + "px) translateZ(0) rotate(" + rotateElement + "deg)"; element.style.opacity = opacity; } } else if(stackedOptions === "Bottom" || stackedOptions === "None"){ if(element){ element.style.webkitTransform = "translateX(" + moveX + "px) translateY(" + (moveY) + "px) translateZ(0) rotate(" + rotateElement + "deg)"; element.style.transform = "translateX(" + moveX + "px) translateY(" + (moveY) + "px) translateZ(0) rotate(" + rotateElement + "deg)"; element.style.opacity = opacity; } } }); }; } if ($('.hr__mwc-page__story-row__images-column').length) { var window_width = $( window ).width(); if (window_width < 768) { $('.hr__mwc-page__story-row__images-column').each(function (index, el) { $(el).trigger("sticky_kit:detach"); }) } else { var storyController = new ScrollMagic.Controller(); $('.hr__mwc-page__story-row__images-column').each(function(index, el){ var parent = this.parentNode.parentNode.parentNode.parentNode; $(el).stick_in_parent({'offset_top': 260}); var storyScene = new ScrollMagic.Scene({triggerElement: parent, triggerHook: '0.5', offset: $(parent).outerHeight(true) / 2 }) .setClassToggle(parent, 'hr__mwc-page__story-row--change-image') .addTo(storyController); }) } $( window ).resize(function() { window_width = $( window ).width(); if (window_width < 768) { $('.hr__mwc-page__story-row__images-column').each(function(index, el){ $(el).trigger("sticky_kit:detach"); }) } else { $('.hr__mwc-page__story-row__images-column').each(function(index, el){ $(el).stick_in_parent({'offset_top': 260}); }) } }); } if ($('.hr__clw__main-content__image').length) { var window_width = $( window ).width(); if (window_width > 768) { $('.hr__clw__main-content__image').stick_in_parent({'offset_top': 72}); } $( window ).resize(function() { window_width = $( window ).width(); if (window_width < 768) { $('.hr__clw__main-content__image').trigger("sticky_kit:detach"); } else { $('.hr__clw__main-content__image').stick_in_parent({'offset_top': 72}); } }); } if ($('.hr__mwc-page__story-row').length) { var readMoreElements = $('.hr__mwc-page__story-row').find('.hr__read-more-excerpt') readMoreElements.parents('.fl-rich-text').addClass('fl-rich-text--excerpt-shown'); readMoreElements.click(function() { $(this).parents('.fl-rich-text').removeClass('fl-rich-text--excerpt-shown'); }); } $('.hr__mwc-page__story-row__images .fl-mosaicflow-content').off('filled'); // comparison images module if (('.hr__comparison-column').length) { var dragging = false, scrolling = false, resizing = false; //cache jQuery objects var imageComparisonContainers = $('.hr__comparison-column'); //check if the .cd-image-container is in the viewport //if yes, animate it checkPosition(imageComparisonContainers); $(window).on('scroll', function () { if (!scrolling) { scrolling = true; (!window.requestAnimationFrame) ? setTimeout(function () { checkPosition(imageComparisonContainers); }, 100) : requestAnimationFrame(function () { checkPosition(imageComparisonContainers); }); } }); //make the .hr__comparison__handle element draggable and modify img width according to its position imageComparisonContainers.each(function () { var actual = $(this); actual.imagesLoaded( { }, function() { actual.addClass('images-loaded'); } ); drags(actual.find('.hr__comparison__handle'), actual.find('.fl-module-photo:nth-child(2)'), actual.find(' > .fl-col-content'), actual.find('.cd-image-label[data-type="original"]'), actual.find('.cd-image-label[data-type="modified"]')); }); function checkPosition(container) { container.each(function () { var actualContainer = $(this); if ($(window).scrollTop() + $(window).height() * 0.5 > actualContainer.offset().top) { actualContainer.addClass('is-visible'); } }); scrolling = false; } //draggable funtionality - credits to http://css-tricks.com/snippets/jquery/draggable-without-jquery-ui/ function drags(dragElement, resizeElement, container, labelContainer, labelResizeElement) { dragElement.on("mousedown vmousedown", function (e) { dragElement.addClass('draggable'); resizeElement.addClass('resizable'); container.addClass('used'); var dragWidth = dragElement.outerWidth(), xPosition = dragElement.offset().left + dragWidth - e.pageX, containerOffset = container.offset().left, containerWidth = container.outerWidth(), minLeft = containerOffset - 22, maxLeft = containerOffset + containerWidth - dragWidth + 22; dragElement.parents().on("mousemove vmousemove", function (e) { if (!dragging) { dragging = true; (!window.requestAnimationFrame) ? setTimeout(function () { animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement); }, 100) : requestAnimationFrame(function () { animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement); }); } }).on("mouseup vmouseup", function (e) { dragElement.removeClass('draggable'); resizeElement.removeClass('resizable'); }); e.preventDefault(); }).on("mouseup vmouseup", function (e) { dragElement.removeClass('draggable'); resizeElement.removeClass('resizable'); }); } function animateDraggedHandle(e, xPosition, dragWidth, minLeft, maxLeft, containerOffset, containerWidth, resizeElement, labelContainer, labelResizeElement) { var leftValue = e.pageX + xPosition - dragWidth; //constrain the draggable element to move inside his container if (leftValue < minLeft) { leftValue = minLeft; } else if (leftValue > maxLeft) { leftValue = maxLeft; } var widthValue = (leftValue + dragWidth / 2 - containerOffset) * 100 / containerWidth + '%'; $('.draggable').css('left', widthValue).on("mouseup vmouseup", function () { $(this).removeClass('draggable'); resizeElement.removeClass('resizable'); }); $('.resizable').css('width', widthValue); dragging = false; } } if($('.hr__clw__main-content').length) { $('.hr__clw__main-content .hr__clw__main-content__text').each(function (i, elem) { var elemId = $(this).attr('id'); var index = i + 1; if (typeof elemId !== 'undefined') { var scene = new ScrollMagic.Scene({triggerElement: "#" + elemId + "", triggerHook: 0.5}) .setClassToggle('.hr__clw__main-content, .side-pagination > div[class^="menu"]', 'reached-' + index + '-item') //.addIndicators({name: 'section ' + elemId + ' trigger'}) // add indicators (requires plugin) .addTo(controller); } }); } });